package com.etalk.crm.pojo;

import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.util.StringUtils;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @author Terwer
 */
@Getter
@Setter
public class TestPaper {
    /**
     * 试卷ID
     */
    private Integer id;
    /**
     * 试卷标题
     */
    private String paperName;
    /**
     * 试卷类型ID
     */
    private Integer tpaperTypeId;
    /**
     * 试卷类型名称
     */
    private String typeCnName;
    /**
     * 难度系数ID
     */
    private Integer qddegreeId;
    /**
     * 难度系数名称
     */
    private String degreeCnName;
    /**
     * 年级ID
     */
    private Integer gradeId;
    /**
     * 年级名称
     */
    private String gradeCnName;

    /**
     * 教材ID
     */
    private String textbooksIdString;

    /**
     * 教材名称
     */
    private String textbooksNameString;
    /**
     * 教材地址
     */
    private String address;
    /**
     * 页码
     */
    private String pageString;
    /**
     * 页码名称
     */
    private String pageNameString;
    /**
     * 单元
     */
    private String unitIdString;
    /**
     * 单元名称
     */
    private String unitNameString;
    /**
     * 教材关联
     */
    private List<Map> textbooksList;
    /**
     * 学期
     */
    private Integer term;
    /**
     * 学期名称
     */
    private String termName;

    /**
     * 对应题目（包含大题标题以及小题）
     */
    private List<QuestionItem> listQuestionItems;

    /**
     * 操作时间
     */
    @JSONField(format = "yyyy/MM/dd HH:mm:ss")  //FastJson包使用注解
    @JsonFormat(pattern = "yyyy/MM/dd HH:mm:ss", timezone = "GMT+8") //Jackson包使用注解
    @DateTimeFormat(pattern = "yyyy/MM/dd HH:mm:ss")   //格式化前台日期参数注解
    private Date recordTime;

    // 学生相关

    /**
     * 学生ID
     */
    private Integer studentId;
    /**
     * 学生姓名
     */
    private String studentName;
    /**
     * 学生登录名
     */
    private String studentLoginName;

    /**
     * 分数ID
     */
    private Integer scoreId;

    /**
     * 分数
     */
    private String score;

    /**
     * 标记试卷状态：0未做，1待批改，2已批改，3未讲解完，4已讲解完
     */
    private Integer state;

    /**
     * 试卷状态：0答题中（未交卷）
     */
    private Integer trackStatus;

    /**
     * 时间跟进状态（0无需跟进，1待跟进，2已跟进）
     */
    private Integer paperTrackState;

    /**
     * 跟进原因
     */
    private String paperTrackReason;

    /**
     * 跟进结果
     */
    private String paperTrackResult;

    /**
     * 试卷发送时间
     */
    @JSONField(format = "yyyy/MM/dd HH:mm:ss")  //FastJson包使用注解
    @JsonFormat(pattern = "yyyy/MM/dd HH:mm:ss", timezone = "GMT+8") //Jackson包使用注解
    @DateTimeFormat(pattern = "yyyy/MM/dd HH:mm:ss")   //格式化前台日期参数注解
    private Date sendTime;

    /**
     * 试卷批改时间
     */
    @JSONField(format = "yyyy/MM/dd HH:mm:ss")  //FastJson包使用注解
    @JsonFormat(pattern = "yyyy/MM/dd HH:mm:ss", timezone = "GMT+8") //Jackson包使用注解
    @DateTimeFormat(pattern = "yyyy/MM/dd HH:mm:ss")   //格式化前台日期参数注解
    private Date correctTime;

    // 做题相关

    /**
     * 试卷完成时间
     */
    @JSONField(format = "yyyy/MM/dd HH:mm:ss")  //FastJson包使用注解
    @JsonFormat(pattern = "yyyy/MM/dd HH:mm:ss", timezone = "GMT+8") //Jackson包使用注解
    @DateTimeFormat(pattern = "yyyy/MM/dd HH:mm:ss")   //格式化前台日期参数注解
    private Date submitTime;

    /**
     * 兼容换行
     *
     * @return 处理后的字符
     */
    public String getPaperTrackReason() {
        if (StringUtils.isEmpty(this.paperTrackReason)) {
            return null;
        }
        String filterdPaperTrackReason = this.paperTrackReason.replace("\n", "<br/>");
        return filterdPaperTrackReason;
    }

    /**
     * 兼容换行
     *
     * @return 处理后的字符
     */
    public String getPaperTrackResult() {
        if (StringUtils.isEmpty(this.paperTrackResult)) {
            return null;
        }
        String filterdPaperTrackResult = this.paperTrackResult.replace("\n", "<br/>");
        return filterdPaperTrackResult;
    }
}
